package com.ftg.learn.chapter12;

import java.util.*;

/**
 * set集合
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/2/13 上午8:19
 */
public class LearnSet {
    public LearnSet() {
        super();
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("a");
        Set<String> set = new HashSet<>(list);
        System.out.println(set.size());
        set.clear();
        System.out.println(set.size());
//        System.out.println(set);
//
//        System.out.println(12 / 0.75f);

        Map<String, String> m = new HashMap<>(3);
        m.put("a", "a");
        System.out.println(51628 & 15);
        // 0 -15 16 - 31
        // 0 16
        System.out.println(51628 & 16);


//
//
//        set.add("abc");
//        set.add("abc");
//        set.add("abc");
//
//        System.out.println(set);
//
//        set.add("feg");
//        set.add("def");
//        System.out.println(set);
//
////        set 无序  不可重复 集合结构
//
//        set.remove("def");
//        System.out.println(set);

//        System.out.println(tableSizeFor(0));
//        System.out.println(tableSizeFor(4));
//        System.out.println(tableSizeFor(5));
//        System.out.println(tableSizeFor(13));
//        System.out.println(tableSizeFor(17));

        List<Integer> arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        arr.add(4);
        //..... 异 增强形 不能删除元素
//        for (Integer integer : arr) {
//            arr.remove(integer);
//        }

        //.....
//        arr.removeAll(arr.subList(1,3));
        arr.removeIf(x -> x % 2 == 0);

//        for (int i = arr.size() - 1; i >= 0; i--) {
//            arr.remove(i);
//        }

//        for (int i = 0; i < arr.size(); i++) {
//            arr.remove(arr.get(i));
//        }
//        for(int i = 0 ,len = arr.size();i < len;i++){
//            arr.remove(0);
//        }
        System.out.println(arr);
    }

    static int MAXIMUM_CAPACITY = 9999;

    static final int tableSizeFor(int cap) {
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }


}
